// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "GameFramework/GameMode.h"
#include "NotifyUI.h"
#include "MainInventoryUI.h"
#include "ToolSelectorUI.h"
#include "CIsAlongGameMode.generated.h"

/**
 * 
 */
UCLASS()
class ISALONG2_API ACIsAlongGameMode : public AGameMode
{
	GENERATED_BODY()

public:
	ACIsAlongGameMode();

	static ACIsAlongGameMode* _isAlongGameMode;

	// UI
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UMG Game")
	TSubclassOf<UNotifyUI> _notifyClass;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UMG Game")
	TSubclassOf<UMainInventoryUI> _mainInventoryClass;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UMG Game")
	TSubclassOf<UToolSelectorUI> _ringSelectorClass;

	// camera shake
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Camera Shake Game")
	TSubclassOf<UCameraShake> _commonFireShake;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Camera Shake Game")
	TSubclassOf<UCameraShake> _punchFireShake;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Camera Shake Game")
	TSubclassOf<UCameraShake> _walkShake;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Camera Shake Game")
	TSubclassOf<UCameraShake> _runShake;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Anim Res")
	TSubclassOf<UAnimInstance> _characterBP;


public:
	UFUNCTION(Exec)
	void SpawnItem(int32 id, int32 count, int32 addition);

	UFUNCTION(Exec)
	void SpawnItemInTimes(int32 id, int32 count, int32 addition);

	UFUNCTION(Exec)
	void SpawnZombieAtLocation(FName name, FVector location);

	UFUNCTION(Exec)
	void SpawnZombie(FName name);

	UFUNCTION(Exec)
	void SpawnZombieInTimes(FName name, int32 count);
};
